Digital images and video are often transmitted and stored in a compressed data format, conforming to compression standards such as the MPEG and JPEG standards for motion and still images. Both of these standards utilize the discrete cosine transform (DCT) to compress eight by eight (8.times.8) blocks of image data. In this context, there often arises the need to scale down an image that is provided in a compressed data format in order to achieve a suitable image.
For example, where an image is to be sent in compressed data format to receivers of different computational and display capabilities, it is necessary to scale down the image to match the capabilities of each receiver. As another example, in multi-party video conferencing, an image of each conference participant is transmitted in compressed data format. Down-scaling is needed because the images are displayed together in a mosaic comprising a large image of the current speaker and smaller, scaled down, images of the other conference participants.
A previously known method for scaling down an image provided in a compressed data format includes: un-compressing the compressed blocks of image data, scaling down the blocks of image data to produce one or more blocks of scaled image data, and then compressing the blocks of scaled image data.
For example, given an image in a DCT compressed data format of four compressed 8.times.8 blocks of image data, scaling down the image by a factor of two using the previously known method requires: four 8.times.8 inverse discrete cosine transforms to un-compress the compressed blocks of image data, 192 add operations and 16 shift operations for bilinear interpolation to scale down the blocks of image data into one 8.times.8 block of scaled image data, and an 8.times.8 discrete cosine transform to compress the block of scaled image data. Since a full 8.times.8 discrete cosine transform (or its inverse) requires 80 multiply operations and 464 add operations, and since a multiply operation can be represented as 4 shift operations and 3 add operations, in this example the previously known scaling method requires a total of 5,276 operations, comprising 1,704 shifts and 3,572 adds. Such a large number of operations is computationally time consuming and is therefore expensive.
Because the previously known method must first decompress the compressed blocks of image data before any scaling operations, the previously known method is computationally inefficient. What is needed is an efficient method and apparatus that operates directly upon compressed blocks of image data to transform them into compressed blocks of scaled image data.